//#include <iostream>
//#include <cstring>
//#include <vector>
//#include <functional>
//using namespace std;
//
//
//
//
//template <class T, class Container = vector<T>, class Compare = less<T>>
//class priority_queue {
//public:
//    priority_queue()=default;
//    template <class InputIterator>
//    priority_queue(InputIterator first, InputIterator last);
//    bool empty()const {
//        return c.empty();
//    }
//    size_t size()const {
//        return c.size();
//    }
//    const T& top()const {
//        return c[0];
//    }
//    void push(const T& x) {
//        c.push_back(x);
//        AdjustUp(c.size() - 1);
//        return;
//    }
//    void pop() {
//        if (empty())return;
//            swap(c[0], c[size() - 1]);
//        c.pop_back();
//        AdjustDown(0);
//    }
//private:
//    void AdjustUp(int child) {
//        int parent = (child - 1) / 2;
//        while (child> 0) {
//            if (c[parent] > c[child])return;
//            swap(c[parent], c[child]);
//            child = parent;
//            parent = (child - 1) / 2;
//        }
//        return;
//    }
//    void AdjustDown(int parent) {
//        int child = parent * 2 + 1;
//        while (child < c.size()) {
//            if (child + 1 < c.size() && c[child + 1] > c[child])child += 1;
//            if (c[parent] > c[child])return;
//            swap(c[parent], c[child]);
//            parent = child;
//            child = parent * 2 + 1;
//        }
//        return;
//    }
//private:
//    Container c;
//    Compare Com;
//};
//
//int main() {
//    priority_queue<int> pq;
//    pq.push(10);
//    pq.push(20);
//    pq.push(30);
//    cout << pq.top() << endl;
//   // pq.pop();
//    //pq.pop();
//    cout << pq.top() << endl;
//
//    return 0;
//}
